/**
 * 语言文件键值修复工具
 * 用于解决包含特殊字符或语法错误的键值
 */

// 导入所有语言文件
import zhMessages from './zh';
import enMessages from './en';
import frMessages from './unified-fr';

// 存储可能有问题的键和修复后的值
const fixedValues: Record<string, Record<string, any>> = {
  zh: {},
  en: {},
  es: {},
  fr: {}
};

/**
 * 添加修复：如果有特定的键需要修复，在这里设置修复后的值
 */
function setupFixes() {
  // 修复中文可能存在的问题
  fixedValues.zh = {
    // 示例: 修复插值语法问题
    // 'some.problematic.key': '修复后的文本',
  };

  // 修复英文可能存在的问题
  fixedValues.en = {};

  // 修复西班牙语可能存在的问题
  fixedValues.es = {};

  // 修复法语可能存在的问题
  fixedValues.fr = {};
}

/**
 * 修复原始语言对象中的问题值
 */
function applyFixes(locale: string, messages: any): any {
  if (!fixedValues[locale]) return messages;

  // 创建深拷贝以避免修改原始对象
  const result = JSON.parse(JSON.stringify(messages));

  // 应用扁平化的修复
  Object.entries(fixedValues[locale]).forEach(([key, value]) => {
    setNestedValue(result, key, value);
  });

  return result;
}

/**
 * 根据点分隔的路径设置嵌套对象的值
 */
function setNestedValue(obj: any, path: string, value: any) {
  const parts = path.split('.');
  let current = obj;

  for (let i = 0; i < parts.length - 1; i++) {
    const part = parts[i];
    if (!current[part]) {
      current[part] = {};
    }
    current = current[part];
  }

  current[parts[parts.length - 1]] = value;
}

// 初始化修复
setupFixes();

// 应用修复并导出修复后的语言对象
export const fixedZhMessages = applyFixes('zh', zhMessages);
export const fixedEnMessages = applyFixes('en', enMessages);
export const fixedEsMessages = applyFixes('es', esMessages);
export const fixedFrMessages = applyFixes('fr', frMessages);

// 导出默认的修复后的语言对象集合
export default {
  zh: fixedZhMessages,
  en: fixedEnMessages,
  es: fixedEsMessages,
  fr: fixedFrMessages
}; 